#include <iostream>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;

int main()
{
    Vector3d v(1, 2, 3);
    Vector3d w(0, 1, 2);

    cout << "Dot product: " << v.dot(w) << endl;
    cout << "Adjoint of v =\n"
         << v.adjoint() << endl;
    double dp = v.adjoint() * w; // automatic conversion of the inner product to a scalar
    cout << "Dot product via a matrix product: " << dp << endl;
    cout << "Cross product:\n"
         << v.cross(w) << endl;

    return 0;
}
